44 #include <boost/unordered_map.hpp>
45 #include <boost/array.hpp>
46 #include <boost/lexical_cast.hpp>
47 #include <boost/format.hpp>
60 #define EPOCH3_STRING_LEN 24
85 class TimeInterpolator;
125 std::string
getSIUnit(
const std::string& variable);
126 std::vector<float>*
getVariable(
const std::string& variable);
134 std::string
getVisUnit(
const std::string& variable);
137 long open(
const std::string& filename);
144 static long _date2es(
int yyyy,
int mm,
int dd,
int hh,
int mm2,
int ss);
151 boost::unordered_map<std::string, std::string> variableNativeUnits;
152 boost::unordered_map<std::string, std::string> variableSIUnits;
153 boost::unordered_map<std::string, std::string> variableVisUnits;
155 boost::unordered_map<std::string, float> conversionFactorsToSI;
158 boost::unordered_map<std::string, std::string> variableAliases;
159 boost::unordered_map<std::string, std::vector<std::string> > listOfRequiredVariablesForComponents;
160 boost::unordered_map<std::string, std::vector<long> > listOfRequiredVariablesForComponentsByID;
161 boost::unordered_map<std::string, std::vector<std::string> > listOfRequiredVariablesForVectors;
162 boost::unordered_map<std::string, std::vector<long> > listOfRequiredVariablesForVectorsByID;
166 void initializeUnits();
167 void initializeSIUnits();
168 void initializeVisUnits();
170 void initializeListOfRequiredVariablesForComponentsAndVectors();
171 void initializeExtraInformation();
173 void initializeVariableAliases();
174 void initializeVariableUnits();
177 std::vector<std::string> createVectorOfStringFromList(
int num, std::string * strings);
178 std::vector<long> createVectorOfLongFromList(
int num, std::string * strings);
179 std::string padString(
const std::string& s,
int minLength);
180 std::string modelName;
182 std::vector<std::string> getListOfRequiredVariablesForComponents(std::string variable);
183 std::vector<std::string> getListOfRequiredVariablesForVectors(std::string variable);
185 void initializeConversionFactorsToSI();
189 void addRequirementsForComponents(std::string variable,
int num, std::string * variables);
190 void addRequirementsForVectors(std::string variable,
int num, std::string * variables);
196 static boost::unordered_map<int, ccmc::Kameleon *> kameleonObjects;
197 static boost::unordered_map<int, ccmc::Tracer *> tracerObjects;
198 static boost::unordered_map<int, ccmc::Interpolator *> interpolatorObjects;
199 static boost::unordered_map<int, ccmc::GeneralFileReader *> generalFileReaderObjects;
200 static boost::unordered_map<int, ccmc::TimeInterpolator *> timeInterpolatorObjects;